Several methods are known for improving the reliability of data transmitted through a communications network. Parity checking includes the use of parity bits which are appended to bytes, blocks or frames of digital transmissions and allow the determination of some types of transmission errors. Another technique is to send identical data streams along two or more separate paths and then to select the best of the received signals or to combine the received signals in some way to obtain a higher quality result. For instance, it is known from U.S. Pat. No. 4,953,197 to use two receiving antennae in parallel and quality data and parity information are checked for each data word of the two signals received from the antennae and the best signal selected. U.S. Pat. Nos. 5,268,909, 5,406,563, 5,436,915, and 5,422,647 all provide methods of error checking of two or more transmissions of the same information down different paths of the system.
Yet another technique is known as ARQ or automatic repeat requests in which a byte, frame or block of data is retransmitted automatically when an error is detected therein in the receiver. Examples of such systems are “stop and wait” or “continuous” ARQ. Further, general types of ARQ are known in which not all of the byte, block or frame is re-transmitted but only some additional information which allows the erroneous signal to be corrected, e.g. using forward error correction techniques. This is sometimes known as ARQ with incremental forward error correction.
Forward error correction (FEC) is known in which errors in the transmitted digital signal are corrected without re-transmitting the same signal. This requires a more complex type of error coding in which sufficient additional correction bits are provided so that the original message can be reconstructed from a signal transmitted with errors. Examples are the Hagelberger, Bose-Chaudhuri, Hamming, convolutional and block codes. The number of additional bits necessary to provide reliable correction can be high which reduces the throughput of the system drastically. However, where a high level of quality is required and retransmissions cannot be tolerated, these methods are most useful. To reduce the reduction in capacity caused by the additional correction bits the number of bits may be reduced by “puncturing” in which a certain proportion of bits from the forward error coded signal are removed. This reduces the quality and reliability of the error correction but increases the data rate.
Combinations of the above are also used. For example, U.S. Pat. No. 5,657,325 describes a combined ARQ and FEC technique in which a signal is error coded, punctured and then transmitted over a first radio channel from one antenna to a receiver and on receiving a negative acknowledgment from the receiver (the signal cannot be corrected properly at the receiver), the relevant punctured bits are sent via a second antenna, i.e. via a separate channel which may have better transmission quality or may introduce different or less troublesome errors. The disadvantage of this technique is that even retransmission of only the punctured bits introduces temporal latency into the transmission which is often unacceptable, e.g. in voice transmissions in which only minimal delay can be tolerated. Further, it is not possible to reconstruct the complete message from the punctured bits alone and the first message must always be used in the reconstruction attempt. It is therefore possible that if the originally received message contains many errors it is not possible to reconstruct an accurate copy of the transmitted message.
Cellular Telecommunications Systems Often include some form of compression of voice messages, e.g. a Vector Sum Excited Linear Prediction (VSELP) speech coder, convolutional coding for error protection, some form of modulation, e.g. differential quadrature phase shift keying (QPSK) modulation, and some form of access scheme, e.g. a time division, multiple access (TDMA) scheme or a Code Division Multiple Access (CDMA) scheme employing a frame subdivided into a number of time slots per carrier frequency. Also, Viterbi coders and decoders as well as convolutional coding are described in “Mobile Radio Communications”, by Raymond Steele, Pentech Press, 1992.
The current state of the art is to use cyclic redundancy check (CRC) codes to detect errors in a block of transmitted bits. In general an N bit CRC code will have a probability of failure of (½)N which only occurs in a very high noise environment. Values of 16 and 32 are common for N. Failure is defined as the code check passing when in fact there are errors in the message. A second failure mode exists when there are no errors in the message but the CRC check fails, signifying that one or more of the CRC bits were in error. This mechanism occurs much less frequently and the associated cost of throwing out a bad message is small.
Modern data networking communication systems are relying more and more on burst transmissions to perform network command and control functions as well as the transmission of burst data. Since, it is standard practice in the industry to utilize the CRC code for error detection, each packet or burst of data includes a CRC code with its data. This allows the receiver to determine with fairly high accuracy if the received bits are correct. The disadvantage of this technique, similar to other coding techniques, is that it adds overhead to the transmission by requiring the transmission of extra bits. The CRC bits to send can be calculated in a number of different ways but most rely on a feedback register architecture where the entire message to be encoded is passed into the register and the final CRC bits used is the state of the register at the conclusion of the process. Standard sizes for CRC codes used in industry are 32, 16 and 8 bits. For short burst transmissions these may end up being a significant portion of a transmission.